package com.ruoyi.clinic.dto.clinicdoctor;

import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 医生新增或更新
 */
@Data
public class ClinicDoctorUpdateDTO implements Serializable {

    @Serial
    private static final long serialVersionUID = -6952789030097005213L;

    /**
     * 医生ID
     */
    private Long doctorId;

    /**
     * 医生姓名
     */
    @Size(max = 20, message = "医生姓名，字符长度最大为20")
    @NotBlank(message = "医生姓名不能为空")
    private String doctorName;

    /**
     * 医生身份证号
     */
    @Size(max = 30, message = "医生身份证号，字符长度最大为30")
    @NotBlank(message = "医生身份证号不能为空")
    private String identityCardNum;

    /**
     * 科室
     */
    @Size(max = 20, message = "科室，字符长度最大为20")
    @NotBlank(message = "科室不能为空")
    private String departmentName;

    /**
     * 医生职称
     */
    @Size(max = 20, message = "医生职称，字符长度最大为20")
    @NotBlank(message = "医生职称不能为空")
    private String doctorTitle;

    /**
     * 年限(是否满5年): 0:不满5年;1:满5年
     */
    @NotBlank(message = "年限不能为空")
    private String isFiveExperience;

    /**
     * 医生签字日期
     */
    @NotNull(message = "医生签字日期不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date doctorVisaDate;

    /**
     * 是否全职(0:否;1:是)
     */
    @NotBlank(message = "是否全职不能为空")
    private String isFullTimeJob;

    /**
     * 是否负责人(0:否;1:是)
     */
    @NotBlank(message = "是否负责人不能为空")
    private String isDirector;

    /**
     * 是否法人(0:否;1:是)
     */
    @NotBlank(message = "是否法人不能为空")
    private String isLegalPerson;

    /**
     * 多点类型(1:唯一点;2:多点)
     */
    @NotBlank(message = "多点/唯一点不能为空")
    private String pointType;

    /**
     * 是否到场(0:否;1:是)
     */
    @NotBlank(message = "是否到场不能为空")
    private String isPresent;

    /**
     * 所在省份ID
     */
    @NotNull(message = "所在省份不能为空")
    private Long provinceId;

    /**
     * 所在省份名称
     */
    private String provinceName;

    /**
     * 所在城市ID
     */
    @NotNull(message = "所在城市不能为空")
    private Long cityId;

    /**
     * 所在城市名称
     */
    private String cityName;

    /**
     * 期望薪水
     */
    @NotNull(message = "期望薪水不能为空")
    private BigDecimal expectSalary;

    /**
     * 手机号
     */
    @Size(max = 20, message = "手机号，字符长度最大为20")
    private String mobile;

    /**
     * 微信号
     */
    @Size(max = 60, message = "微信号，字符长度最大为60")
    @NotBlank(message = "微信号不能为空")
    private String weixin;

    /**
     * 医生照片
     */
    @NotBlank(message = "医生照片不能为空")
    private String doctorImage;

    /**
     * 其他证件，多个文件，用英文逗号隔开
     */
    @NotBlank(message = "其他证件不能为空")
    private String otherImage;

    /**
     * 业务员ID
     */
    private Long salesmanId;

    /**
     * 创建部门
     */
    private Long createDept;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 创建者ID
     */
    private Long createById;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新者ID
     */
    private Long updateById;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 备注
     */
    @Size(max = 500, message = "备注，字符长度最大为500")
    private String remark;
}
